DDD - Domain-Driven Design
Bronnen
- Julie Lerman, Data Points - DDD-Friendlier EF Core 2.0, Part 2, October 2017
- Julie Lerman, Data Points - DDD-Friendlier EF Core 2.0, September 2017
Wat is een domeinmodel?
Het domeinmodel bestaat uit conceptuele klassen of entiteiten. Zoín klasse of entiteit representeert een concept of iets tastbaars (bijvoorbeeld een artikel) uit de werkelijkheid. Denk bijvoorbeeld aan de verkoop van een artikel. Een object is een zelfstandig iets uit de werkelijkheid dat van belang is voor het te ontwerpen systeem. Objecten met gelijksoortige eigenschappen, bijvoorbeeld artikelobjecten, kunnen we beschouwen als exemplaren - ook wel instanties genoemd - van een klasse of entiteit Artikel.
Bedenk wel dat hèt domeinmodel niet bestaat. Een domeinmodel bevat immers altijd interpretaties en beslissingen. Een andere ontwerper kan mogelijk een andere interpretatie geven en andere beslissingen nemen. Interpretatieverschillen kunnen door een goede communicatie met opdrachtgever en gebruikers wellicht verminderd worden.
De bouwstenen van een domeinmodel
Een domeinmodel is opgebouwd uit klassen of entiteiten die door associaties of verwantschappen met elkaar verbonden zijn. Een klasse of entiteit wordt nader bepaald door zijn attributen die eigenschappen van een klasse of entiteit vastleggen. Zoals gezegd representeren klassen betekenisvolle dingen of concepten uit de werkelijkheid. Een klasse wordt gekarakteriseerd door zijn naam. In het algemeen bezitten klassen attributen die eigenschappen van zo'n klasse beschrijven. Attributen hebben een naam en een gegevenstype. Hierbij worden zogenaamde primitieve gegevenstypen gebruikt zoals gehele getallen, gebroken getallen, tekst, datums, tijdstippen en booleans.
Werkwijze
Een domeinmodel is de beschrijving van alles uit het domein dat voor het systeem van belang kan zijn. Dit is ruimer dan het toegewerken naar een relationele database. In een domeinmodel worden ook klassen opgenomen die overeenkomen met elementen uit de context en waarvan het helemaal niet duidelijk is of die ooit een tegenhanger in het uiteindelijke systeem zullen krijgen. Denk bij domeinmodel dus vooral niet alleen aan een datamodel!
Toch is een datamodel een goed vertrekpunt.